home *** CD-ROM | disk | FTP | other *** search
- ;--------------------------------;
- ; CODELOAD - A COMAL MODULE ;
- ; ;
- ; RUNNING A PROGRAM WITH A CODE ;
- ; ;
- ; BY DICK KLINGENS ;
- ; 851001 ;
- ; DUTCH COMAL USERS GROUP ;
- ; THE HAGUE - HOLLAND ;
- ;--------------------------------;
- ;
- * =$8009 ;START OF MODULE
- ;
- ;--CONSTANTS---------------------;
- FALSE =0
- TRUE =1
- DEFPAG =%01000110 ;MAP
- DIS =8 ;CHARACTERS
- CR =13
- LOWER =14
- ;
- ;--VARIABLES & ROUTINES----------;
- TEMP =$0055 ;TEMPORARY STORAGE
- INDEX =$00F6 ;INDEX FOR TEXT
- CDBUF =$C661 ;CODE BUFFER
- NOREST =$C841 ;RESTORE
- HEADLN =$C84D ;FLAG
- CWRT =$CA06 ;PRINT CHAR ON SCREEN
- COMAL =$CA30 ;TO COMAL EDITOR
- EXCUTE =$CA36 ;EXECUTE CODE
- SCAN =$FFE4 ;SCAN KEYBOARD
- ;
- ;--CODES-------------------------;
- LOAD =2
- RUN =14
- ;
- ;--MODULE DESCRIPTION------------;
- .BYTE DEFPAG ;MAP
- .WORD EIND ;END OF MODULE
- .WORD SIGNAL ;THERE IS A SIGNAL ROUTINE
- .WORD 0 ;NO PACKAGES
- ;
- ;--------------------------------;
- SIGNAL CPY #LOAD ;IF NOT LOAD THEN
- BNE NLOAD ; GOTO NLOAD
- LDA POWER
- BEQ FIRST
- JSR INCODE ;EXEC INCODE
- LDA #255
- STA HEADLN
- STA CDBUF+3
- LDA #RUN
- STA CDBUF+4
- JSR EXCUTE ;EXEC EXCUTE
- JMP COMAL ;GOTO COMAL EDITOR
- ;
- FIRST INC POWER
- NLOAD RTS ;RETURN TO COMAL
- ;
- POWER .BYTE 0
- ;
- INCODE LDA #TRUE
- STA NOREST ;DISABLE RESTORE
- LDA #<TEXT
- LDX #>TEXT
- JSR PRTEXT ;EXEC PRTEXT
- JSR READ ;EXEC READ
- LDA #FALSE
- STA NOREST ;ENABLE RESTORE
- RTS ;RETURN FROM INCODE
- ;
- PRTEXT STA INDEX ;SET TEXT POINTER
- STX INDEX+1
- LDY #0
- REPEAT LDA (INDEX),Y ;READ CHAR
- BEQ EOT ;IF END-OF-TEXT THEN GOTO EOT
- JSR CWRT ;EXEC CWRT
- INY
- BNE REPEAT
- EOT RTS ;RETURN FROM PRTEXT
- ;
- TEXT .BYTE DIS,LOWER
- .BYTE 'TYPE CODE: '
- .BYTE 0 ;END-OF-TEXT
- ;
- READ LDX #0
- WAIT STX TEMP
- SWAIT JSR SCAN ;EXEC SCAN
- BEQ SWAIT ;IF NO CHAR THEN GOTO SWAIT
- LDX TEMP
- CMP CODE,X ;IF NOT CODE=X THEN
- BNE CDERR ; GOTO CDERR
- INX
- CPX #CDEND-CODE ;IF NOT END-OF-CODE THEN
- BNE WAIT ; GOTO WAIT
- LDA #<OK
- LDX #>OK
- JSR PRTEXT ;PRINT "OK"
- RTS ;RETURN FROM READ
- ;
- CDERR JSR SCAN ;EXEC SCAN
- CMP #CR ;IF NOT <CR> THEN
- BNE CDERR ; GOTO CDERR
- LDA #<ERTXT
- LDX #>ERTXT
- JSR PRTEXT ;EXEC PRTEXT
- LOOP JMP LOOP ;RESET!!
- ;
- CODE .BYTE 'CML80' ;THIS IS THE CODE
- CDEND
- OK .BYTE 'OK',CR,0
- ERTXT .BYTE 'ERROR IN CODE, RESET',0
- ;
- EIND .END
-